home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / smb_netusergetaliases.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  223 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6. #
  7. # XXXXX BROKEN
  8. #
  9.  
  10. if(description)
  11. {
  12.  script_id(10893);
  13.  script_version("$Revision: 1.9 $");
  14.  name["english"] = "Obtains the lists of users aliases";
  15.  
  16.  script_name(english:name["english"]);
  17.  
  18.  desc["english"] = "
  19. This script requests the list of groups each user belongs
  20. to and stores it in the KB
  21. Risk factor : None";
  22.  
  23.  
  24.  
  25.  script_description(english:desc["english"]);
  26.  
  27.  summary["english"] = "Implements NetUserGetGroups()";
  28.  
  29.  
  30.  script_summary(english:summary["english"]);
  31.  
  32.  script_category(ACT_GATHER_INFO);
  33.  
  34.  
  35.  script_copyright(english:"This script is Copyright (C) 2002 Renaud Deraison");
  36. family["english"] = "Windows : User management";
  37.  script_family(english:family["english"]);
  38.  script_dependencies("netbios_name_get.nasl",
  39.               "smb_login.nasl", 
  40.              "smb_sid2user.nasl",
  41.              "snmp_lanman_users.nasl");
  42.  script_require_keys("SMB/transport", "SMB/name", "SMB/login", "SMB/password", "SMB/Users/enumerated");
  43.  script_require_ports(139, 445);
  44.  exit(0);
  45. }
  46.  
  47.  
  48. exit(0); # XXXXX broken at this time
  49.  
  50. include("smb_nt.inc");
  51.  
  52. port = kb_smb_transport();
  53. if(!port)port = 139;
  54. if(!get_port_state(port))exit(0);
  55.  
  56.  
  57. soc = open_sock_tcp(port);
  58. if(!soc)exit(0);
  59.  
  60. login = kb_smb_login();
  61. pass  = kb_smb_password();
  62. domain = kb_smb_domain();
  63.  
  64.  
  65. if(!login)login = "";
  66. if(!pass) pass  = "";
  67. if(!domain) domain = "";
  68.  
  69. name = kb_smb_name();
  70.  
  71. r = smb_session_request(soc:soc, remote:name);
  72. if(!r){
  73.     #display("smb_session_request failed\n");
  74.     exit(0);
  75.     }
  76.     
  77. prot = smb_neg_prot(soc:soc);
  78. if(!prot)exit(0);
  79.  
  80. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  81. if(!r){
  82.     #display("Session setup failed\n");
  83.     exit(0);
  84.     }
  85.  
  86. uid = session_extract_uid(reply:r);
  87.  
  88. #
  89. # Connect to the remote IPC and extract the TID
  90. # we are attributed
  91. #      
  92. r = smb_tconx(soc:soc, name:name, uid:uid, share:"IPC$");
  93. # extract our tree id
  94. tid = tconx_extract_tid(reply:r);
  95.  
  96. if(!tid)exit(0);
  97.  
  98. #display("TID = ", tid, "\n");
  99.  
  100. pipe = OpenPipeToSamr(    soc:soc, 
  101.                   uid:uid, 
  102.                   tid:tid);
  103.               
  104. #display("PIPE = ", pipe, "\n");
  105.  
  106. samrhdl = SamrConnect2(    soc:soc, 
  107.                    uid:uid,
  108.                    tid:tid, 
  109.                    pipe:pipe, 
  110.                    name:name
  111.               );
  112.  
  113.  
  114. dom = _SamrEnumDomains(    soc:soc, 
  115.                   uid:uid, 
  116.                   tid:tid, 
  117.                   pipe:pipe, 
  118.                   samrhdl:samrhdl
  119.               );
  120.  
  121.  
  122.  
  123. sid = SamrDom2Sid(    soc:soc, 
  124.                       uid:uid, 
  125.               tid:tid, 
  126.               pipe:pipe, 
  127.               samrhdl:samrhdl, 
  128.               dom:dom
  129.          );
  130.  
  131.  
  132.  
  133.  
  134. g_domhdl =
  135.     SamrOpenDomain(    soc:soc, 
  136.             uid:uid, 
  137.             tid:tid, 
  138.             pipe:pipe, 
  139.             samrhdl:samrhdl,
  140.             sid:sid
  141.                );          
  142.  
  143.  
  144. bihdl = SamrOpenBuiltin(soc:soc,
  145.             uid:uid,
  146.             tid:tid,
  147.             pipe:pipe,
  148.             samrhdl:samrhdl
  149.             );
  150.     
  151.         
  152. count = 1;
  153. login = string(get_kb_item(string("SMB/Users/", count)));
  154. while(login)
  155. {
  156. rid = SamrLookupNames(  soc:soc, 
  157.             uid:uid, 
  158.             tid:tid, 
  159.             pipe:pipe, 
  160.             domhdl:g_domhdl,
  161.             name:login
  162.              );    
  163.  
  164. if(!rid)
  165. {
  166.  rid = SamrLookupNames(  soc:soc, 
  167.             uid:uid, 
  168.             tid:tid, 
  169.             pipe:pipe, 
  170.             domhdl:bihdl,
  171.             name:login
  172.              );    
  173. }
  174.  
  175.  
  176.  
  177. usrhdl = SamrOpenUser(    soc:soc, 
  178.             uid:uid, 
  179.             tid:tid, 
  180.             pipe:pipe, 
  181.             samrhdl:g_domhdl,
  182.             sid:sid,
  183.              rid:rid
  184.              );
  185. if(!usrhdl)
  186. {
  187.  #display("Hu ho. Using bihdl\n");
  188.  
  189.  usrhdl = SamrOpenUser(    soc:soc, 
  190.             uid:uid, 
  191.             tid:tid, 
  192.             pipe:pipe, 
  193.             samhdl:bihdl,
  194.             sid:sid,
  195.              rid:rid
  196.              );
  197.              
  198.              
  199. }            
  200.  
  201.              
  202.  
  203. rids = SamrQueryUserAliases(soc:soc, 
  204.                    uid:uid,
  205.               tid:tid,
  206.               pipe:pipe,
  207.               usrhdl:bihdl, 
  208.             sid:sid,
  209.             rid:rid);    
  210.             
  211.  
  212. if(rids)
  213.  {
  214.   name = string("SMB/Users/", count, "/LocalGroups");
  215.   set_kb_item(name:name, value:rids);
  216.   #display(rids);
  217.  }         
  218.  
  219.  count = count + 1;
  220.  login = string(get_kb_item(string("SMB/Users/", count)));
  221. }         
  222.           
  223.